home *** CD-ROM | disk | FTP | other *** search
/ Nautilus 1992 July / Nautilus-3-8 / Nautilus-3-8.bin / Tools & Utilities / Techy Stuff / Doco ƒ / CSMP ƒ / CSMP-V1-088.TXT < prev    next >
Encoding:
Text File  |  1992-06-30  |  48.1 KB  |  1,260 lines

  1. C.S.M.P. Digest             Thu, 21 May 92       Volume 1 : Issue 88
  2.  
  3. Today's Topics:
  4.  
  5.     Popup menus - menuitems at runtime
  6.     Hooking hypercard to internet
  7.     no BusErrors when writing to nonexistent NuBusSlot with Quadra
  8.     Segment loader question.
  9.     Action! information?
  10.     (Q): Does anyone know about 'ictb' rsrcs?
  11.     COMBINATORIX...math-type programming question?
  12.     Programming Apple OneScanner?
  13.     Serial Port Programming
  14.  
  15.  
  16. The Comp.Sys.Mac.Programmer Digest is moderated by Michael A. Kelly.
  17.  
  18. These digests are available (by using FTP, account anonymous, your email
  19. address as password) in the pub/mac/csmp-digest directory on ftp.cs.uoregon.
  20. edu.  This is also the home of the comp.sys.mac.programmer Frequently Asked
  21. Questions list.  The last several issues of the digest are available from
  22. sumex-aim.stanford.edu as well.
  23.  
  24. These digests are also available via email.  Just send a note saying that you
  25. want to be on the digest mailing list to mkelly@cs.uoregon.edu, and you will
  26. automatically receive each new digest as it is created.
  27.  
  28. The digest is a collection of articles from the internet newsgroup comp.sys.
  29. mac.programmer.  It is designed for people who read c.s.m.p. semi-regularly
  30. and want an archive of the discussions.  If you don't know what a newsgroup
  31. is, you probably don't have access to it.  Ask your systems administrator(s)
  32. for details.  (This means you can't post questions to the digest.)
  33.  
  34. The articles in these digests are taken directly from comp.sys.mac.programmer.
  35. They are not edited; all articles included in this digest are in their original
  36. posted form.  The only articles that are -not- included in these digests are
  37. those which didn't receive any replies (except those that give information
  38. rather than ask a question).  All replies to each article are concatenated
  39. onto the original article in the order in which they were received.  Article
  40. threads are not added to the digests until the last article added to the
  41. thread is at least one month old (this is to ensure that the thread is dead
  42. before adding it to the digests).
  43.  
  44. Send administrative mail to mkelly@cs.uoregon.edu.
  45.  
  46. -------------------------------------------------------
  47.  
  48. From: wong_a@summer.chem.su.oz.au
  49. Subject: Popup menus - menuitems at runtime
  50. Organization: School of Chemistry, University of Sydney
  51. Date: Fri, 17 Apr 1992 02:02:58 GMT
  52.  
  53.  
  54. I want to use the new control for popup menus (IM VI 3-16) but I want to 
  55. set up the menu-items at run-time. Easy enough, once you can extract the
  56. MenuHandle from the control's contrlData field then you can do,
  57.  
  58.     for (i=0;i<menuItemsCount;++i)
  59.         AppendMenu(popupMenu,ArrayStrPtr[i]);
  60.     ShowControl(popupCntl);
  61.  
  62. Unfortunately, the control is NOT updated until you've called TrackControl,
  63. which leaves the control Rect blank until the user clicks on it. Has
  64. anyone figured out a workaround for this problem, or I am just completely
  65. wrong about this.
  66.  
  67.  
  68. - -----------------------------------------------------------------------------
  69. Adrian Wong, Dept.of Theoretical Chemistry     wong_a@summer.chem.su.oz.au
  70. University of Sydney NSW 2006 Australia        061-2-692 4137
  71.  
  72.  
  73. +++++++++++++++++++++++++++
  74.  
  75. From: wysocki@husc.harvard.edu (Chris Wysocki)
  76. Date: 16 Apr 92 21:06:19 GMT
  77. Organization: Harvard University, Cambridge, MA
  78.  
  79. In article <1992Apr16.210258.1@summer.chem.su.oz.au>, wong_a@summer.chem.su.oz.au
  80. writes:
  81.  
  82. > I want to use the new control for popup menus (IM VI 3-16) but I want to 
  83. > set up the menu-items at run-time. Easy enough, once you can extract the
  84. > MenuHandle from the control's contrlData field then you can do,
  85. >     for (i=0;i<menuItemsCount;++i)
  86. >         AppendMenu(popupMenu,ArrayStrPtr[i]);
  87. >     ShowControl(popupCntl);
  88. > Unfortunately, the control is NOT updated until you've called TrackControl,
  89. > which leaves the control Rect blank until the user clicks on it. Has
  90. > anyone figured out a workaround for this problem, or I am just completely
  91. > wrong about this.
  92.  
  93. The way I got around this problem was involved puting a single blank item in
  94. the MENU resource and adding the items at runtime with code that looked like:
  95.  
  96.      for (i=0;i<menuItemsCount;++i)
  97.    if (i == 0)
  98.     SetItem(popupMenu,1,ArrayStrPtr[i]);
  99.    else
  100.           AppendMenu(popupMenu,ArrayStrPtr[i]);
  101.      ShowControl(popupCntl);
  102.  
  103. Not particularly elegant, I admit, but it works.
  104.  
  105. Chris Wysocki
  106. wysocki@husc.harvard.edu
  107.  
  108.  
  109. +++++++++++++++++++++++++++
  110.  
  111. From: quinn@cs.uwa.edu.au (Quinn "The Eskimo!")
  112. Organization: The University of Western Australia
  113. Date: Tue, 21 Apr 1992 02:25:46 GMT
  114.  
  115. In article <1992Apr16.210258.1@summer.chem.su.oz.au>, wong_a@summer.chem.su.oz.au writes:
  116. >
  117. > I want to use the new control for popup menus (IM VI 3-16) but I want to 
  118. > set up the menu-items at run-time. Easy enough, once you can extract the
  119. > MenuHandle from the control's contrlData field then you can do,
  120. >     for (i=0;i<menuItemsCount;++i)
  121. >         AppendMenu(popupMenu,ArrayStrPtr[i]);
  122. >     ShowControl(popupCntl);
  123. > Unfortunately, the control is NOT updated until you've called TrackControl,
  124. > which leaves the control Rect blank until the user clicks on it. Has
  125. > anyone figured out a workaround for this problem, or I am just completely
  126. > wrong about this.
  127.  
  128. I think the appropriate magic is...
  129.  
  130.   SetCtlMax(...,CountMItems(...))
  131.  
  132. Quinn "The Eskimo!"   <quinn@cs.uwa.edu.au>  "Real Coke, Diet .sig"
  133. Department of Computer Science, The University of Western Australia
  134.   -- Scarred for life by ResEdit, MenuInfo.menuProc<>nil and popup menus.
  135.  
  136.  
  137. ---------------------------
  138.  
  139. From: zee@fwi.uva.nl (Daniel M. van der Zee (I89))
  140. Subject: Hooking hypercard to internet
  141. Date: 16 Apr 92 14:46:13 GMT
  142. Organization: FWI, University of Amsterdam
  143.  
  144. For the sake of a simple user interface i would like to be able to hook
  145. up a hypercard stack to a unix BBS running on the internet. The goal is
  146. to give a user of our set of stacks (course design system) a very simple
  147. interface to the BBS as an intergral part of the stack by adding a menu
  148. to the menubar with items like "post message", "mail message" and "read mail".
  149. A comand like "post message" should bring up a floating window and enable to
  150. edit a message there (+ copy/paste from the stack) and (at the user's request)
  151. open a connection to the bbs, post the message and logout.
  152.  
  153. To handle commands like this i'm looking for external commands like
  154.   OpenInternetConnection
  155.   CloseInternetConnection
  156.   SendText
  157.   RecieveText
  158. Does someone know where I can get such commands and, if not, where i should
  159. look for documentation on writing such code (maybe i should look at the
  160. NCSA telnet source).
  161. Oh yeah, users of our stack use low-end macs (mac+/classic 2.5 Mb RAM) and
  162. therefore have not installed system 7 (still running 6.X) and the externals
  163. should be able to run on their hard/software.
  164.  
  165. If you want to reply, please send me a copy of your message throug e-mail 
  166. because our system admin set up the news system to delete messages within 2/3
  167. DAYS and a easterweekend is starting tomorrow.
  168.  
  169. I will ofcourse post a summary to the net and let you know how i solved the
  170. problem.
  171.  
  172. (Excuse my poor spelling etc)
  173.  
  174. Thank you already,
  175. Daniel van der Zee 
  176. zee@fwi.uva.nl
  177.  
  178. +++++++++++++++++++++++++++
  179.  
  180. From: erh0362@tesla.njit.edu
  181. Date: 19 Apr 92 16:55:46 GMT
  182. Organization: New Jersey Institute of Technology
  183.  
  184. > For the sake of a simple user interface i would like to be able to hook
  185. > up a hypercard stack to a unix BBS running on the internet. The goal is
  186. > to give a user of our set of stacks (course design system) a very simple
  187. > interface to the BBS as an intergral part of the stack by adding a menu
  188. > to the menubar with items like "post message", "mail message" and "read mail".
  189. > A comand like "post message" should bring up a floating window and enable to
  190. > edit a message there (+ copy/paste from the stack) and (at the user's request)
  191. > open a connection to the bbs, post the message and logout.
  192. > To handle commands like this i'm looking for external commands like
  193. >   OpenInternetConnection
  194. >   CloseInternetConnection
  195. >   SendText
  196. >   RecieveText
  197. > Does someone know where I can get such commands and, if not, where i should
  198. > look for documentation on writing such code (maybe i should look at the
  199. > NCSA telnet source).
  200. > Oh yeah, users of our stack use low-end macs (mac+/classic 2.5 Mb RAM) and
  201. > therefore have not installed system 7 (still running 6.X) and the externals
  202. > should be able to run on their hard/software.
  203.         I would suggest rethinking Hypercard as the appropriate front 
  204. end for your BBS. You could do this much more quickly with the new 
  205. LORAN modules for Microphone II. I could probably get a prototype up 
  206. and running in a couple of days although I am fairly familiar with the 
  207. environment already. Your mileage may vary. The big advantage is that 
  208. Microphone is already written to handle _exactly_ this sort of task. No 
  209. XCMDs or XFCNs would need to be written. The disadvantage is that 
  210. Microphone II 4.0 is $215 or so a pop, but quantity discounts may (or 
  211. may not) be available. Also there is a currently unreleased runtime 
  212. version of it, hopefully soon available for small licensing fees. I 
  213. know of one information service using this already and perhaps Software 
  214. Ventures Corporation, the publishers of Microphone II, would be willing 
  215. to let you in on this deal too. If you're a small group then it's 
  216. probably cheaper to buy everyone copies of MP II than to do the sort of 
  217. programming you would need to do to accomplish the same task in 
  218. HyperCard.
  219.  
  220.  
  221. Elliotte Rusty Harold        Department of Applied Mathematics
  222. elharo@m.njit.edu        New Jersey Institute of Technology
  223. erh0362@tesla.njit.edu        Newark, NJ 07103
  224.  
  225. ---------------------------
  226.  
  227. From: ostheim@opal.cs.tu-berlin.de (Joachim Ostheimer)
  228. Subject: no BusErrors when writing to nonexistent NuBusSlot with Quadra
  229. Date: 14 Apr 92 10:09:52 GMT
  230. Organization: Techn. University of Berlin, Germany
  231.  
  232.  
  233.  
  234. With the introduction of the quadra, apple changed 
  235. the way the mac reacts to a BusError.
  236.   
  237. The Change: when you try to _write_  to a nonexistent
  238. address -> nothing happens, no BusError as with
  239. any other Mac.
  240. For a hardware projekt, I have to make _even_the_Quadra_
  241. generate a BusError on illegal writes in NuBus
  242. address space.
  243.  
  244.  
  245.  
  246. Joachim Ostheimer 
  247. Technical University Berlin, Germany.
  248.  
  249. +++++++++++++++++++++++++++
  250.  
  251. From: russotto@eng.umd.edu (Matthew T. Russotto)
  252. Date: Tue, 14 Apr 92 15:14:25 GMT
  253. Organization: College of Engineering, University of Maryland, College Park
  254.  
  255. In article <1992Apr14.100952.2164@cs.tu-berlin.de> ostheim@opal.cs.tu-berlin.de (Joachim Ostheimer) writes:
  256. >
  257. >
  258. >With the introduction of the quadra, apple changed 
  259. >the way the mac reacts to a BusError.
  260. >  
  261. >The Change: when you try to _write_  to a nonexistent
  262. >address -> nothing happens, no BusError as with
  263. >any other Mac.
  264. >For a hardware projekt, I have to make _even_the_Quadra_
  265. >generate a BusError on illegal writes in NuBus
  266. >address space.
  267.  
  268. On the 68030 and 68851, if the memory address is not in the
  269. translation table (or is marked invalid), a bus error is generated
  270. whether it is a write or a read.  Apple would not have been able to
  271. change this-- therefore, either the 68040 changed it, or a bus error
  272. DOES happen, but the default handler just skips the offending
  273. instruction.  If the latter, all you have to do is install your own
  274. bus error.  
  275.  
  276.  
  277. - -- 
  278. Matthew T. Russotto    russotto@eng.umd.edu    russotto@wam.umd.edu
  279. Some news readers expect "Disclaimer:" here.
  280. Just say NO to police searches and seizures.  Make them use force.
  281. (not responsible for bodily harm resulting from following above advice)
  282.  
  283. +++++++++++++++++++++++++++
  284.  
  285. From: ostheim@opal.cs.tu-berlin.de (Joachim Ostheimer)
  286. Organization: Techn. University of Berlin, Germany
  287. Date: Tue, 14 Apr 1992 21:17:02 GMT
  288.  
  289. i have my own buserror routine which filters all read and write busErrors
  290. in empty NubusSlots and this works fine with every 68030 mac.
  291.  
  292. But with the Quadras i can catch only reads.
  293.  
  294. You can Check it out with Macsbug: 
  295.    dm FS000000    (  S stands for SlotNr.  )
  296.  ->    Unable to acces that address    (68030 or 68040)
  297.  
  298.    sm FS000000 abcd
  299.  ->    Unable to acces that address   (68030)
  300.  ->        ( nothing )                (68040)
  301.  
  302.  I even tested all other Vektors ( Interrupt 0-7 ....)
  303.  ... there seems to be a Difference.
  304.  
  305. Joachim Ostheimer 
  306. Technical University Berlin, Germany.
  307.  
  308.  
  309. +++++++++++++++++++++++++++
  310.  
  311. From: davoli@natinst.com (Russell J. Davoli)
  312. Date: 15 Apr 92 14:35:45 GMT
  313. Organization: National Instruments Corp.
  314.  
  315. In article <1992Apr14.151425.5552@eng.umd.edu>, russotto@eng.umd.edu (Matthew T. Russotto) writes:
  316. > In article <1992Apr14.100952.2164@cs.tu-berlin.de> ostheim@opal.cs.tu-berlin.de (Joachim Ostheimer) writes:
  317. > >
  318. > >
  319. > >With the introduction of the quadra, apple changed 
  320. > >the way the mac reacts to a BusError.
  321. > >  
  322. > >The Change: when you try to _write_  to a nonexistent
  323. > >address -> nothing happens, no BusError as with
  324. > >any other Mac.
  325. > >For a hardware projekt, I have to make _even_the_Quadra_
  326. > >generate a BusError on illegal writes in NuBus
  327. > >address space.
  328. > On the 68030 and 68851, if the memory address is not in the
  329. > translation table (or is marked invalid), a bus error is generated
  330. > whether it is a write or a read.  Apple would not have been able to
  331. > change this-- therefore, either the 68040 changed it, or a bus error
  332. > DOES happen, but the default handler just skips the offending
  333. > instruction.  If the latter, all you have to do is install your own
  334. > bus error.  
  335.  
  336. The 68040 hasn't changed bus error behavior, but the Quadra is a different 
  337. beast entirely.  On it, the bus interface will cause an NMI (level 7 interrupt)
  338. when a bus error occurs on a write.  I suggest you contact Mac DTS for more
  339. details on this esoteric subject.
  340.  
  341. Russell "Mr. Bus Error" Davoli
  342.  
  343. +++++++++++++++++++++++++++
  344.  
  345. From: ksand@apple.com (Kent Sandvik)
  346. Date: 17 Apr 92 23:34:49 GMT
  347. Organization: MacDTS Mongols
  348.  
  349. In article <1992Apr14.151425.5552@eng.umd.edu>, russotto@eng.umd.edu (Matthew T.
  350. Russotto) writes:
  351. > On the 68030 and 68851, if the memory address is not in the
  352. > translation table (or is marked invalid), a bus error is generated
  353. > whether it is a write or a read.  Apple would not have been able to
  354. > change this-- therefore, either the 68040 changed it, or a bus error
  355. > DOES happen, but the default handler just skips the offending
  356. > instruction.  If the latter, all you have to do is install your own
  357. > bus error.  
  358.  
  359. ..our group is just now looking into the issue of installing own
  360. bus handlers, it's doable but skanky, many other managers create temp
  361. patches, and the chain of vectors could be broken due to an interrupt.
  362. So the best way is to turn off interrupts during the bus vector patch,
  363. then again this is not good either...
  364.  
  365. Cheers,
  366. Kent
  367.  
  368. +++++++++++++++++++++++++++
  369.  
  370. From: ostheim@opal.cs.tu-berlin.de (Joachim Ostheimer)
  371. Organization: Techn. University of Berlin, Germany
  372. Date: Sat, 18 Apr 1992 01:36:13 GMT
  373.  
  374.  
  375. In article <1992Apr14.151425.5552@eng.umd.edu>, russotto@eng.umd.edu (Matthew T.
  376. Russotto) writes:
  377. > On the 68030 and 68851, if the memory address is not in the
  378. > translation table (or is marked invalid), a bus error is generated
  379. > whether it is a write or a read.  Apple would not have been able to....
  380.  
  381. This is not the only reason for a Bus Error.
  382. When the Address is marked valid in the Translation Table
  383.  and is a Nubus Address
  384.  and the addressed Card does not answer
  385.      ( for Example when there is no Card )
  386.  then also a Bus Error is generated.
  387.  
  388.  The only exception is the Quadra 700 or 900 where write Accesses
  389.  to an Empty NuBus Slot are ignored and cause no Bus Error.
  390.  
  391. * * *
  392.  In his article  ksand@apple.com (Kent Sandvik) writes:
  393. > ..our group is just now looking into the issue of installing own
  394. > bus handlers, it's doable but skanky ...
  395.  
  396. The Handler even has to check out the CPU Type, 24 or 32 Bit addressing Mode
  397. and VirtualMemory ... 
  398.  
  399.        Joachim  Ostheimer
  400.  
  401. +++++++++++++++++++++++++++
  402.  
  403. From: russotto@eng.umd.edu (Matthew T. Russotto)
  404. Date: Mon, 20 Apr 92 03:21:39 GMT
  405. Organization: College of Engineering, University of Maryland, College Park
  406.  
  407. In article <1992Apr18.013613.27690@cs.tu-berlin.de> ostheim@opal.cs.tu-berlin.de (Joachim Ostheimer) writes:
  408. >
  409. >In article <1992Apr14.151425.5552@eng.umd.edu>, russotto@eng.umd.edu (Matthew T.
  410. >Russotto) writes:
  411. >> On the 68030 and 68851, if the memory address is not in the
  412. >> translation table (or is marked invalid), a bus error is generated
  413. >> whether it is a write or a read.  Apple would not have been able to....
  414. >
  415. >This is not the only reason for a Bus Error.
  416. >When the Address is marked valid in the Translation Table
  417. > and is a Nubus Address
  418. > and the addressed Card does not answer
  419. >     ( for Example when there is no Card )
  420. > then also a Bus Error is generated.
  421. > The only exception is the Quadra 700 or 900 where write Accesses
  422. > to an Empty NuBus Slot are ignored and cause no Bus Error.
  423.  
  424. Hmm-- maybe it would be possible to determine which nubus slots were
  425. empty and MARK them invalid in the translation table, if bus error on
  426. write to empty slot is necessary.
  427. - -- 
  428. Matthew T. Russotto    russotto@eng.umd.edu    russotto@wam.umd.edu
  429. Some news readers expect "Disclaimer:" here.
  430. Just say NO to police searches and seizures.  Make them use force.
  431. (not responsible for bodily harm resulting from following above advice)
  432.  
  433. ---------------------------
  434.  
  435. Organization: University of Illinois at Chicago
  436. Date: Saturday, 18 Apr 1992 23:56:25 CDT
  437. From: John Galidakis <U21192@uicvm.uic.edu>
  438. Subject: Segment loader question.
  439.  
  440.  Hello mac gurus.
  441. I was considering purchasing a 680x0 assembler the other day,
  442. and I've decided it would be cheaper (and more fun) to sit down
  443. and write one. (pretty radical, huh?)
  444.  I have a pretty good grasp of what's involved, except one minor
  445. point. I want to be able to create multiple segments. Now:
  446. Specifically, as soon as the assembler encounters a directive
  447. (say {$I segName}) I want The following code to be stored on
  448. the segment of my choice. I know that the segment loader uses
  449. the jump table (CODE id=0) to keep track of what's loaded and
  450. what's not. (Entry containing the routine offset from begginning
  451. of segment, MOVE.W #segid,-(SP), and _LoadSeg trap)
  452.  Question is, is that all I need in the creation of a multisegment
  453. app?. I.E., is the following strategy correct?
  454. Assembler: encounter {$I...} directive.
  455. add one more entry to the jump table with offset=end of segment id=
  456. segName and then append the generated code there.
  457. Repeat, until {$I segName2} is reached, etc.
  458. What about CODE=1 which loads anyway?
  459. Any help is greatly appreciated.
  460. J.Galidakis-programmer/Designed Data Co.
  461. "Things are simple; don't complicate  them..."
  462.  
  463. +++++++++++++++++++++++++++
  464.  
  465. From: d88-jwa@dront.nada.kth.se (Jon W{tte)
  466. Date: 19 Apr 92 14:36:54 GMT
  467. Organization: Royal Institute of Technology, Stockholm, Sweden
  468.  
  469. .edu> U21192@uicvm.uic.edu (John Galidakis) writes:
  470.  
  471.    the jump table (CODE id=0) to keep track of what's loaded and
  472.    what's not. (Entry containing the routine offset from begginning
  473.    of segment, MOVE.W #segid,-(SP), and _LoadSeg trap)
  474.  
  475. That's the format.
  476.  
  477.    What about CODE=1 which loads anyway?
  478.  
  479. Does it ? I thought all the loader did was jump to table entry one
  480. in the jump table. By convention, that always refers to segment one.
  481.  
  482. Or am I off track ?
  483.  
  484. - -- 
  485. "You should meet yourself someday. I'm sure you would hate it."
  486. - - Me: h+@nada.kth.se; Jon W{tte (The Diplomat - NOT!)
  487.  
  488. +++++++++++++++++++++++++++
  489.  
  490. From: siegel@world.std.com (Rich Siegel)
  491. Organization: GCC Technologies
  492. Date: Sun, 19 Apr 1992 15:18:13 GMT
  493.  
  494. In article <92109.235625U21192@uicvm.uic.edu> John Galidakis <U21192@uicvm.uic.edu> writes:
  495. > Hello mac gurus.
  496. >I was considering purchasing a 680x0 assembler the other day,
  497. >and I've decided it would be cheaper (and more fun) to sit down
  498. >and write one. (pretty radical, huh?)
  499. > I have a pretty good grasp of what's involved, except one minor
  500. >point. I want to be able to create multiple segments. Now:
  501. >Specifically, as soon as the assembler encounters a directive
  502. >(say {$I segName}) I want The following code to be stored on
  503. >the segment of my choice. I know that the segment loader uses
  504. >the jump table (CODE id=0) to keep track of what's loaded and
  505. >what's not. (Entry containing the routine offset from begginning
  506. >of segment, MOVE.W #segid,-(SP), and _LoadSeg trap)
  507. >"Things are simple; don't complicate  them..."
  508.  
  509. You're missing the forest for the trees. The creation of multiple
  510. segments and the jump table is the function of the linker, not
  511. the assembler. All the assembler itself really needs to do is to
  512. emit code and relocation information so that the linker can patch
  513. up the proper code offsets at link time. The standard format for
  514. representing this information on the Mac is the MPW .O format,
  515. which is understood and interpreted by most development systems'
  516. linkers, including MPW, THINK Pascal, and (with conversion) THINK
  517. C. 
  518.  
  519. For maximum usefulness, your assembler should emit .O files
  520. as its output. Not only will this broaden its appeal, it will
  521. remove the burden of writing a linker from your shoulders.
  522. Another good goal is to be source-compatible with the MPW
  523. assembler, and to offer a few features that the MPW assembler
  524. doesn't that people just can't live without. That way, people
  525. have a compelling reason to switch, and will be able to do 
  526. so easily, without investing a lot of time in porting.
  527.  
  528. R.
  529.  
  530.  
  531. - -- 
  532. - -----------------------------------------------------------------------
  533. Rich Siegel                              Internet: siegel@world.std.com
  534. Software Engineer, Quickdraw Group
  535. GCC Technologies
  536.  
  537. ---------------------------
  538.  
  539. From: mcnichol@terminator.psy.syr.edu (Brendan T. McNichols)
  540. Subject: Action! information?
  541. Date: Mon, 13 Apr 92 17:01:21 EDT
  542.  
  543.  
  544. Hi all,
  545.  
  546. I have heard of a programming tool called Action! from Expertelligence  
  547. Inc.  Action! is a toolkit which allows a programmer to create user  
  548. interfaces and build programs visually (ala NeXT Interface Builder).   
  549. Does anyone know a telephone number, US Mail address, or email address  
  550. for Expertelligence so I can get more information on this software?
  551.  
  552. Thanks,
  553. Brendan
  554.  
  555. - --
  556. Brendan T. McNichols, Computer Engineer               (315) 443-9902
  557. Psyracuse U. Sychology Dept.             mcnichol@psy.syr.edu (NeXT)
  558. 430 Huntington Hall               mcnichol@rodan.acs.syr.edu (ASCII)
  559. Syracuse, NY 13244                              mcnichol@suvm.bitnet
  560.  
  561. +++++++++++++++++++++++++++
  562.  
  563. From: ksand@apple.com (Kent Sandvik)
  564. Date: 18 Apr 92 23:47:53 GMT
  565. Organization: MacDTS Mongols
  566.  
  567. In article <1992Apr13.170121.29874@newstand.syr.edu>,
  568. mcnichol@terminator.psy.syr.edu (Brendan T. McNichols) writes:
  569. > Hi all,
  570. > I have heard of a programming tool called Action! from Expertelligence  
  571. > Inc.  Action! is a toolkit which allows a programmer to create user  
  572. > interfaces and build programs visually (ala NeXT Interface Builder).   
  573. > Does anyone know a telephone number, US Mail address, or email address  
  574. > for Expertelligence so I can get more information on this software?
  575.  
  576. This toolkit is for MCL (Macintosh Common Lisp), but if you are interested
  577. in MCL, go ahead. Sorry, I don't have their email address just now.
  578.  
  579. Cheers,
  580. Kent
  581.  
  582. ---------------------------
  583.  
  584. From: danny@utkux1.utk.edu (Danny McCampbell)
  585. Subject: (Q): Does anyone know about 'ictb' rsrcs?
  586. Date: 15 Apr 92 12:21:24 GMT
  587. Organization: University of Tennessee
  588.  
  589. Hi all.
  590.  
  591. I am adding color to the buttons in my dialogs and I have just encountered
  592. the 'ictb' resource.  The only editor for it is the hex editor.  Does
  593. anyone know of another editor that can be used?  I cannot really understand
  594. where what goes where.
  595.  
  596. Also, is there a list of the hex codes for all colors that will tell me
  597. what hex numbers I need to put together to yield certain colors?
  598.  
  599. Some info would really be appreciated.  Thanks in advance.
  600.  
  601. Danny
  602.  
  603. +++++++++++++++++++++++++++
  604.  
  605. From: Pete.Gontier@p811.f70.n109.z1.fidonet.org (Pete Gontier)
  606. Date: 16 Apr 92 05:56:17 GMT
  607.  
  608.  
  609.  DM> From: danny@utkux1.utk.edu (Danny McCampbell)
  610.  
  611.  DM> I am adding color to the buttons in my dialogs and I have just
  612.  DM> encountered the 'ictb' resource. The only editor for it is the
  613.  DM> hex editor. Does anyone know of another editor that can be used?
  614.  
  615. Resorcerer does a wonderful job of this editing where nothing else does.
  616. Contact info is in this group's FAQ.
  617.  
  618. ---------------------------
  619.  
  620. From: alen@crash.cts.com (Alen Shapiro)
  621. Subject: COMBINATORIX...math-type programming question?
  622. Date: 16 Apr 92 20:27:04 GMT
  623. Organization: Crash TimeSharing, El Cajon, CA
  624.  
  625. ok you budding math-type mac programmers...here's a question...
  626.  
  627. I need to figure out how many ways n objects may be picked from a set
  628. of m objects. Order is not relevant (ab = ba). 
  629.  
  630. Is the answer (m-n)! (!=factorial)?...this works for the boundary condition
  631. where m=n only if 0! = 1 and my math is too shaky for this.
  632.  
  633. Any takers
  634. - --alen
  635. alen@crash.cts.com
  636.  
  637. mail me and I'll summarize...book recommendations appreciated.
  638.  
  639. +++++++++++++++++++++++++++
  640.  
  641. From: mhall@occs.cs.oberlin.edu (Matthew Hall)
  642. Date: 17 Apr 92 19:33:46 GMT
  643. Organization: Oberlin College Computer Science
  644.  
  645. In article <1992Apr16.202704.8111@crash.cts.com> alen@crash.cts.com (Alen Shapiro) writes:
  646.  
  647. >   ok you budding math-type mac programmers...here's a question...
  648. >
  649. >   I need to figure out how many ways n objects may be picked from a set
  650. >   of m objects. Order is not relevant (ab = ba). 
  651. >
  652. >   Is the answer (m-n)! (!=factorial)?...this works for the boundary condition
  653. >   where m=n only if 0! = 1 and my math is too shaky for this.
  654. >
  655.  
  656. well, lets see.  
  657. First pick - m possible choices
  658. Second pick - m-1 possible choices
  659. nth pick m-n+1 choices
  660.  
  661. algorithm = m*(m-1)*(m-2)*...*(m-n+1)
  662.  
  663.       = m!
  664.       -----
  665.       (m-n)!  = works for boundary condition.  In fact, it just works.
  666.  
  667.  
  668. - -matt hall
  669. - --
  670.  
  671.  
  672. - -------------------------------------------------------------------------------
  673. Matt Hall.    mhall@occs.cs.edu  OR  SMH9666@OBERLIN.BITNET
  674.               (216)-775-5805 (That's a Cleveland Area code. Lucky Me)
  675.  
  676. "If a man comes up to you and says:
  677.     'A dog just carried away your ear.'
  678. Do you run after the dog, or search first for your ear?" - Moon over Morocco
  679.   
  680.  
  681. +++++++++++++++++++++++++++
  682.  
  683. From: sje@xylos.ma30.bull.com (Steven J. Edwards)
  684. Date: 17 Apr 92 20:04:05 GMT
  685. Organization: Bull HN, Worldwide Information Systems, Billerica, Mass., USA
  686.  
  687. In article <MHALL.92Apr17143346@occs.cs.oberlin.edu> mhall@occs.cs.oberlin.edu (Matthew Hall) writes:
  688. # In article <1992Apr16.202704.8111@crash.cts.com> alen@crash.cts.com (Alen Shapiro) writes:
  689. #
  690. #>    ok you budding math-type mac programmers...here's a question...
  691. #> 
  692. #>    I need to figure out how many ways n objects may be picked from a set
  693. #>    of m objects. Order is not relevant (ab = ba). 
  694. #> 
  695. #>    Is the answer (m-n)! (!=factorial)?...this works for the boundary condition
  696. #>    where m=n only if 0! = 1 and my math is too shaky for this.
  697. #> 
  698. #
  699. # well, lets see.  
  700. # First pick - m possible choices
  701. # Second pick - m-1 possible choices
  702. # nth pick m-n+1 choices
  703. #
  704. # algorithm = m*(m-1)*(m-2)*...*(m-n+1)
  705. #
  706. #         = m!
  707. #         -----
  708. #         (m-n)!  = works for boundary condition.  In fact, it just works.
  709.  
  710.     Nope.  Remember, he said that order was unimportant.  The
  711. correct answer is:
  712.  
  713.     C = n! / ((n - k)! * k!)
  714.  
  715. For example, the number of different five card poker hands that can
  716. be dealt from a fifty two card deck is:
  717.  
  718.     C = 52! / (47! * 5!) = 2598960
  719.  
  720. For thirteen card bridge hands:
  721.  
  722.     C = 52! / (39! * 13!) = approx 6.35 * 10 ^ 11
  723.  
  724.     I guess that there just aren't that many card players among
  725. Mac programmers.
  726.  
  727.  [The above opinions expressed are my own; not necessarily held by others.]
  728.       == Steven J. Edwards           Bull HN Information Systems Inc. ==
  729.       == (508) 294-3484              300 Concord Road         MS 820A ==
  730.       == sje@xylos.ma30.bull.com     Billerica, MA 01821          USA ==
  731. "That Government which Governs the Least, Governs Best." -- Thomas Jefferson
  732.  
  733. +++++++++++++++++++++++++++
  734.  
  735. From: slchambe@athena.mit.edu (Stephen L Chamberlin)
  736. Date: 17 Apr 92 20:11:25 GMT
  737. Organization: Massachusetts Institute of Technology
  738.  
  739.  
  740. >>   ok you budding math-type mac programmers...here's a question...
  741. >>
  742. >>   I need to figure out how many ways n objects may be picked from a set
  743. >>   of m objects. Order is not relevant (ab = ba). 
  744. >>
  745. >>   Is the answer (m-n)! (!=factorial)?...this works for the boundary condition
  746. >>   where m=n only if 0! = 1 and my math is too shaky for this.
  747. >>
  748. >
  749. >well, lets see.  
  750. >First pick - m possible choices
  751. >Second pick - m-1 possible choices
  752. >nth pick m-n+1 choices
  753. >
  754. >algorithm = m*(m-1)*(m-2)*...*(m-n+1)
  755. >
  756. >      = m!
  757. >      -----
  758. >      (m-n)!  = works for boundary condition.  In fact, it just works.
  759. >
  760.  
  761. This is correct when ordering is important. The original poster wanted to 
  762. find the formula when order is _not_ relevant.
  763.  
  764. The correct formula is "m choose n," or:
  765.  
  766.      m!
  767.   --------
  768.   n!(m-n)!
  769.  
  770.  
  771. Have fun!
  772.  
  773. +++++++++++++++++++++++++++
  774.  
  775. From: russotto@eng.umd.edu (Matthew T. Russotto)
  776. Date: Fri, 17 Apr 92 21:25:38 GMT
  777. Organization: College of Engineering, University of Maryland, College Park
  778.  
  779. In article <MHALL.92Apr17143346@occs.cs.oberlin.edu> mhall@occs.cs.oberlin.edu (Matthew Hall) writes:
  780. >In article <1992Apr16.202704.8111@crash.cts.com> alen@crash.cts.com (Alen Shapiro) writes:
  781. >
  782. >>   ok you budding math-type mac programmers...here's a question...
  783. >>
  784. >>   I need to figure out how many ways n objects may be picked from a set
  785. >>   of m objects. Order is not relevant (ab = ba). 
  786. >>
  787. >>   Is the answer (m-n)! (!=factorial)?...this works for the boundary condition
  788. >>   where m=n only if 0! = 1 and my math is too shaky for this.
  789. >>
  790. >
  791. >well, lets see.  
  792. >First pick - m possible choices
  793. >Second pick - m-1 possible choices
  794. >nth pick m-n+1 choices
  795. >
  796. >algorithm = m*(m-1)*(m-2)*...*(m-n+1)
  797. >
  798. >      = m!
  799. >      -----
  800. >      (m-n)!  = works for boundary condition.  In fact, it just works.
  801.  
  802. Nope, doesn't work.  Remember, order doesn't matter.  It is
  803.  
  804.    m!
  805. - --------
  806. n!(m-n)!
  807.  
  808.  
  809. - -- 
  810. Matthew T. Russotto    russotto@eng.umd.edu    russotto@wam.umd.edu
  811. Some news readers expect "Disclaimer:" here.
  812. Just say NO to police searches and seizures.  Make them use force.
  813. (not responsible for bodily harm resulting from following above advice)
  814.  
  815. +++++++++++++++++++++++++++
  816.  
  817. From: hards4@ee.adfa.oz.au (Brad Hards)
  818. Organization: Organisation! Not likely around here
  819. Date: Fri, 17 Apr 1992 11:39:48 GMT
  820.  
  821. In article <1992Apr16.202704.8111@crash.cts.com>, alen@crash.cts.com (Alen Shapiro) writes:
  822. > I need to figure out how many ways n objects may be picked from a set
  823. > of m objects. Order is not relevant (ab = ba). 
  824. > Is the answer (m-n)! (!=factorial)?...this works for the boundary condition
  825. > where m=n only if 0! = 1 and my math is too shaky for this.
  826.  
  827. Nope. The answer (I hope!) is m!/(n)!(m-n)! , where ! is the factorial
  828. operator i.e 5!=5.4.3.2.1, and 1! = 0! = 1. 
  829. It is wprth noting that when you want to calculate it, it is possible to
  830. reduce the computational overhead by noting that m!/(m-n)! can be simplified
  831. to m.(m-1).(m-2)...(n+1), and also that the if you want to choose n items from
  832. a set of m, that is identical to chooing (m-n) from the same set of m. If any 
  833. of this doesn't make sense ( I can't do the proper notation in ascii ) let
  834. me know, and I'll do this again with a better word processor.
  835.  
  836. As for books, any high school probability book will cover this -> if it
  837. sounds like "Introduction to Probability" it will do this.
  838.  
  839. Brad Hards
  840.  
  841.  
  842. +++++++++++++++++++++++++++
  843.  
  844. From: calvin@leland.Stanford.EDU (The Weasel)
  845. Date: 20 Apr 92 16:18:24 GMT
  846. Organization: DSG, Stanford University, CA 94305, USA
  847.  
  848. In article <1992Apr16.202704.8111@crash.cts.com> alen@crash.cts.com (Alen Shapir
  849. o) writes:
  850.  
  851. >   ok you budding math-type mac programmers...here's a question...
  852. >
  853. >   I need to figure out how many ways n objects may be picked from a set
  854. >   of m objects. Order is not relevant (ab = ba).
  855. >
  856. >   Is the answer (m-n)! (!=factorial)?...this works for the boundary condition
  857. >   where m=n only if 0! = 1 and my math is too shaky for this.
  858. >
  859.  
  860. What you want is the combination function. It is (n!)/(m! * (n-m)!)
  861.  
  862. Peter
  863.  
  864. - -- 
  865. Peter Chang                        |  "I'm sure I would be much more upset
  866. E-Mail: calvin@leland.stanford.edu |   if I weren't under such heavy sedation."
  867. Snail Mail: PO Box 9603            |                    David St. Hubbins
  868.             Stanford, CA  94309    |
  869.  
  870. ---------------------------
  871.  
  872. From: spencer@med.umich.edu (Spencer W. Thomas)
  873. Subject: Programming Apple OneScanner?
  874. Organization: University of Michigan HSITN
  875. Date: Fri, 17 Apr 1992 22:01:50 GMT
  876.  
  877. This may be the second posting of this question.  If so, I apologize
  878. - -- our news feed has been flaky.
  879.  
  880. I am looking for programming information on the Apple OneScanner.  I
  881. need to write a special-purpose scanning application.  Does anybody
  882. know where I can get this info?  (If the answer is APDA, please feel
  883. free to direct a kick at my posterior.)
  884.  
  885. Thanks.
  886.  
  887. - --
  888. =Spencer W. Thomas         HSITN, U of Michigan, Ann Arbor, MI 48109
  889. spencer.thomas@med.umich.edu    313-747-2778
  890.  
  891. +++++++++++++++++++++++++++
  892.  
  893. From: spencer@med.umich.edu (Spencer W. Thomas)
  894. Date: 13 Apr 92 16:42:24 GMT
  895. Organization: University of Michigan HSITN
  896.  
  897. Does anyone know where I can get information on programming the Apple
  898. OneScanner?  Would APDA have it (I'm not a member, but others here
  899. are)? 
  900.  
  901. Please respond by mail.
  902.  
  903. - --
  904. =Spencer W. Thomas         HSITN, U of Michigan, Ann Arbor, MI 48109
  905. spencer.thomas@med.umich.edu    313-747-2778
  906.  
  907. +++++++++++++++++++++++++++
  908.  
  909. From: blob@Apple.COM (Brian Bechtel)
  910. Date: 18 Apr 92 14:08:21 GMT
  911. Organization: Apple Computer Inc., Cupertino, CA
  912.  
  913. spencer@med.umich.edu (Spencer W. Thomas) writes:
  914.  
  915. >Does anyone know where I can get information on programming the Apple
  916. >OneScanner?  Would APDA have it (I'm not a member, but others here
  917. >are)? 
  918.  
  919. R0138LLA       Programmer's Guide to Apple Scanners $25.00
  920.  
  921. The APDA price lists are available for anonymous ftp on ftp.apple.com,
  922. in the directory /dts/apda/price-lists.  Also on that server is a
  923. variety of other information about APDA, in /dts/apda.
  924.  
  925. You can also send a message to apda@applelink.apple.com.  By the way,
  926. APDA hasn't had a membership fee for a while now...
  927.  
  928. - --Brian Bechtel     blob@apple.com     "My opinion, not Apple's"
  929.  
  930. +++++++++++++++++++++++++++
  931.  
  932. From: roy@adeptsln.cts.com
  933. Date: 19 Apr 92 02:48:36 GMT
  934. Organization: Adept Solutions
  935.  
  936. In article <SPENCER.92Apr17170150@guraldi.med.umich.edu> spencer@med.umich.edu  
  937. (Spencer W. Thomas) writes:
  938. > This may be the second posting of this question.  If so, I apologize
  939. > -- our news feed has been flaky.
  940. > I am looking for programming information on the Apple OneScanner.  I
  941. > need to write a special-purpose scanning application.  Does anybody
  942. > know where I can get this info?  (If the answer is APDA, please feel
  943. > free to direct a kick at my posterior.)
  944. The answer _IS_ APDA. I'll leave the kicking to yourself. ;)
  945. - -- 
  946. Roy Lovejoy      | internet:  roy@adeptsln.cts.com
  947. Head RGB Guy     | AppleLink: adept
  948. Adept Solutions  | CIS:       72447,1447
  949. .................| dual certified developer: NeXT & Apple ;)
  950.  
  951. ---------------------------
  952.  
  953. From: hpoppe@ncar.ucar.edu (Herb Poppe)
  954. Subject: Serial Port Programming
  955. Date: 15 Apr 92 16:12:49 GMT
  956. Organization: National Center for Atmospheric Research
  957.  
  958. In article <73763@netnews.upenn.edu> green@eniac.seas.upenn.edu (Bradley 
  959. Green ) writes:
  960.  
  961. > I'm trying to run a distributed processing network, using a Mac as the 
  962. > master controller, with dedicated microcontrollers at the oother nodes
  963. > of the network.  What I want to do is to be able to run the Mac serial
  964. > port at its maximum asynchronous speed, which I believe is 230Kbaud, but
  965. > I haven't found any real info on how to program the serial port to do
  966. > this.  Note that I don't want to use AppleTalk protocols, but just to
  967. > send data byte-by-byte.
  968.  
  969. The Mac's serial driver (software) is limited to a maximum speed of 
  970. 57.6KB. According to the conventional wisdom, this is the maximum speed 
  971. that Apple could achieve with an interrupt driven driver on the original 
  972. Mac. Note that the 230KB AppleTalk drivers are not event driven. It is 
  973. probably the case that Macs like the IIsi, etc. could support higher 
  974. interrupt driven baud rates, but the current serial driver has no 
  975. mechanism for specifying a baud rate higher than 57.6KB.
  976.  
  977. You will have to write you own driver if you want to run at higher baud 
  978. rates. This means you will have to get the technical details on the Zilog 
  979. SCC.
  980.  
  981. Suppose you decide to live with the 57.6KB limit and use the Apple serial 
  982. driver. Depending on how you wire your network, there may be another 
  983. consideration that may not be handled by the current serial driver. Are 
  984. you using RS-485 transcievers like the SN75176 with your microcontrollers; 
  985. that is, is your network a single twisted pair? If so, then only one 
  986. RS-485 driver on the network can be enabled at any one time. This includes 
  987. the driver in the Mac. I do not know if the Mac serial driver always 
  988. enables the driver before each transmission and then disables it at the 
  989. end of transmission, or whether it enables the driver at open and disables 
  990. it at close, or whether it is always enabled. You can get around this 
  991. problem by using two twisted pair and separate RS-485 drivers and 
  992. receivers with your micros. The Mac's driver would be wired to all the 
  993. micros' receivers and the micros' drivers would all be wired to the Mac's 
  994. receiver. Then it would not be an issue if the Mac's driver were always 
  995. enabled.
  996.  
  997. At some point in the future, I plan to implement a network like the one 
  998. you mention. For me, the 57.6KB limit is not a problem, but I will need to 
  999. know how the Mac serial driver handles enabling/disabling the RS-422 
  1000. driver. If anyone can answer that question, I'd like to know.
  1001.  
  1002. If you decide you need to write your own driver, I seem to recall that at 
  1003. one time Apple made the source code of a (maybe not THE) serial driver 
  1004. available. If I remember correctly, does anyone remember how to get this 
  1005. code?
  1006.  
  1007. Herb Poppe             hpoppe@ncar.ucar.edu
  1008. NCAR                      (303) 497-1296
  1009. 1850 Table Mesa Dr.
  1010. Boulder, CO  80307-3000
  1011.  
  1012. +++++++++++++++++++++++++++
  1013.  
  1014. From: jackb@mdd.comm.mot.com (Jack Brindle)
  1015. Organization: Motorola, Mobile Data Division - Seattle, WA
  1016. Date: Wed, 15 Apr 1992 21:01:01 GMT
  1017.  
  1018. In article <1992Apr15.161249.25140@ncar.ucar.edu> hpoppe@ncar.ucar.edu (Herb Poppe) writes:
  1019. >In article <73763@netnews.upenn.edu> green@eniac.seas.upenn.edu (Bradley 
  1020. >Green ) writes:
  1021. >
  1022. >> I'm trying to run a distributed processing network, using a Mac as the 
  1023. >> master controller, with dedicated microcontrollers at the oother nodes
  1024. >> of the network.  What I want to do is to be able to run the Mac serial
  1025. >> port at its maximum asynchronous speed, which I believe is 230Kbaud, but
  1026. >> I haven't found any real info on how to program the serial port to do
  1027. >> this.  Note that I don't want to use AppleTalk protocols, but just to
  1028. >> send data byte-by-byte.
  1029. >
  1030. >The Mac's serial driver (software) is limited to a maximum speed of 
  1031. >57.6KB. According to the conventional wisdom, this is the maximum speed 
  1032. >that Apple could achieve with an interrupt driven driver on the original 
  1033.  
  1034. The 57.6KB limit has far more to do with limitations imposed by the 
  1035. hardware designers at Zilog who did the 8530 than the software folks
  1036. at Apple. Quite simply, the limitation is imposed by the use of the
  1037. internal SCC baud rate generation clock. Take a good look at the SCC
  1038. technical manual; it will explain why. You will also find out that the
  1039. SCC will go faster than 56KB for asynchronous format if you supply an
  1040. external clock.
  1041.  
  1042. >Mac. Note that the 230KB AppleTalk drivers are not event driven. It is 
  1043.  
  1044. They also run quite different. The incoming LocalTalk frame causes an
  1045. interrupt when the address matches the one programmed into the SCC. The
  1046. remaining bytes of the frame are then read during that first interrupt
  1047. service response. So, it's one interrupt per packet.
  1048.  
  1049. >probably the case that Macs like the IIsi, etc. could support higher 
  1050. >interrupt driven baud rates, but the current serial driver has no 
  1051. >mechanism for specifying a baud rate higher than 57.6KB.
  1052.  
  1053. Only if the clocking rate of the SCC is changed, or external clocking is
  1054. supplied. The SCC has to run faster, not the CPU. Again, this is simply
  1055. not primarily  a software issue!
  1056.  
  1057. >
  1058. >You will have to write you own driver if you want to run at higher baud 
  1059. >rates. This means you will have to get the technical details on the Zilog 
  1060. >SCC.
  1061.  
  1062. ... And run in synchronous mode. Writing a synchronous driver for the
  1063. SCC can be quite tricky. There _is_ some *magic* that has to be applied.
  1064. Zilog's technical notes make it a lot easier these days, but there still
  1065. is a pretty good learning curve.
  1066.  
  1067. >
  1068. >Suppose you decide to live with the 57.6KB limit and use the Apple serial 
  1069. >driver. Depending on how you wire your network, there may be another 
  1070. >consideration that may not be handled by the current serial driver. Are 
  1071. >you using RS-485 transcievers like the SN75176 with your microcontrollers; 
  1072. >that is, is your network a single twisted pair? If so, then only one 
  1073. >RS-485 driver on the network can be enabled at any one time. This includes 
  1074. >the driver in the Mac. I do not know if the Mac serial driver always 
  1075. >enables the driver before each transmission and then disables it at the 
  1076. >end of transmission, or whether it enables the driver at open and disables 
  1077. >it at close, or whether it is always enabled. You can get around this 
  1078.  
  1079. In async mode, the SCC always drives the output line.
  1080.  
  1081. >problem by using two twisted pair and separate RS-485 drivers and 
  1082. >receivers with your micros. The Mac's driver would be wired to all the 
  1083. >micros' receivers and the micros' drivers would all be wired to the Mac's 
  1084. >receiver. Then it would not be an issue if the Mac's driver were always 
  1085. >enabled.
  1086.  
  1087. The output ports on the Mac are controlled by the SCC's RTS signal. This
  1088. signal would need to be controlled to avoid problems. By the way this is
  1089. not simply a problem of blocking other transmissions. Directly connecting
  1090. the outputs of two drivers that are in opposite states can cause a very
  1091. large current flow through both devices, and will probably end up damaging
  1092. one or both devices.  The other way to resolve the situation is to do what
  1093. Apple did with LocalTalk, and provide some form of isolation for each Mac.
  1094. The LocalTalk interface box effectively provides DC isolation for each Mac,
  1095. while passing the rapidly changing data signals onto the main bus. Possibly
  1096. the best way to do this in this situation is to use an RS442 to open-collector
  1097. interface. This is also the method used for the ADB. You can then simply
  1098. tie the outputs of each open-collector buffer together on the network bus.
  1099. You would also need a pull-up resistor to make the network voltage level
  1100. sit high when no-one is driving it. I would probably opt for an actual
  1101. discrete transistor for this purpose (say a 2N4124, available at Radio Shack)
  1102. rather than use an IC. You only need one per node, and the transistor has
  1103. higher current capabilities. This would be useful for driving longer cable
  1104. lengths.
  1105.  
  1106. >
  1107. >At some point in the future, I plan to implement a network like the one 
  1108. >you mention. For me, the 57.6KB limit is not a problem, but I will need to 
  1109. >know how the Mac serial driver handles enabling/disabling the RS-422 
  1110. >driver. If anyone can answer that question, I'd like to know.
  1111.  
  1112. See above. The RTS line does it.
  1113.  
  1114. >
  1115. >If you decide you need to write your own driver, I seem to recall that at 
  1116. >one time Apple made the source code of a (maybe not THE) serial driver 
  1117. >available. If I remember correctly, does anyone remember how to get this 
  1118. >code?
  1119.  
  1120. If it wasn't THE driver, it sure was a good fake. I remember it quite well.
  1121. I have no idea where you could get it. I have a feeling that Apple's
  1122. driver will suit the original poster's purpose quite well. All that is
  1123. needed is a bit of cleverness on the hardware side to make things play
  1124. together. It's not hard to do, and is a great opportunity to learn things.
  1125.  
  1126. By the way, you might wish to look at an MC14469 Addressable Asynchronous
  1127. Receiver/Transmitter. It is a really neat device that allows you to set
  1128. an address for each AART, and send data on a common bus to each device.
  1129. It will respond only to data sent to its address. It's only catch is that
  1130. it runs rather slow, max data rate is 9600 baud. Still, the addressing
  1131. concepts and usage might provide some good ideas.
  1132.  
  1133. Jack Brindle
  1134. ham radio: wa4fib
  1135. internet: jackb@mdd.comm.mot.com
  1136.  
  1137.  
  1138. +++++++++++++++++++++++++++
  1139.  
  1140. From: green@eniac.seas.upenn.edu (Bradley Green )
  1141. Date: 16 Apr 92 02:39:05 GMT
  1142. Organization: University of Pennsylvania
  1143.  
  1144. Back to the original poster (me), I guess.  The conclusion I have drawn from
  1145. this debate is that trying to run the serial interface at over 57,600 baud is
  1146. more trouble than its worth; I'd rather write my software to keep traffic
  1147. low.
  1148.  
  1149. However, the discussion of the RS-422 interface has left me confused.  I
  1150. thought that this standard was just a 'fast' RS-232 with most of the 
  1151. control pins removed; you can still hook up an RS-232 to the Mac as
  1152. long as it runs under 19200 baud.  However, the hardware discussions I've
  1153. seen have led me to realize that this may not be the case.  What are
  1154. the differences between the RS-232 and the RS-422?  What is the easiest
  1155. manner in which to implement the latter (422) in hardware?
  1156.  
  1157. - --
  1158. *----------------------------------------------------------------------------*
  1159. * Bradley S. Green                University of Pennsylvania   *
  1160. * green@eniac.seas.upenn.edu            Dept. Of Systems Engineering *
  1161. *----------------------------------------------------------------------------*
  1162.  
  1163. +++++++++++++++++++++++++++
  1164.  
  1165. From: bcoleman@hayes.com (Bill Coleman)
  1166. Date: 16 Apr 92 11:00:34 GMT
  1167. Organization: Hayes Microcomputer Products, Norcross, GA
  1168.  
  1169. In article <1992Apr15.161249.25140@ncar.ucar.edu>, hpoppe@ncar.ucar.edu (Herb Poppe) writes:
  1170. > The Mac's serial driver (software) is limited to a maximum speed of 
  1171. > 57.6KB. According to the conventional wisdom, this is the maximum speed 
  1172. > that Apple could achieve with an interrupt driven driver on the original 
  1173. > Mac. 
  1174.  
  1175. Wrong. This is the maximum speed you get when using the internal bit
  1176. rate generator the smallest programmable divisor (zero, which causes a
  1177. divide by 4) with the internally supplied clock to the Z8530. 
  1178. ie: 3.672 MHz / 4 = 57375 * 16 (which is close enough to 57600)
  1179. A 16x clock is necessary to properly operate asynchronous receivers, since
  1180. the receiver doesn't know when the bit transitions will take place (ie
  1181. it is not synchronized to the clock)
  1182.  
  1183. > Note that the 230KB AppleTalk drivers are not event driven. 
  1184.  
  1185. Perhaps you mean "interrupt driven." In that case, you are wrong again.
  1186. 230.4 Kbps LocalTalk *IS* interrupt driven.
  1187.  
  1188. The difference here is that LocalTalk is synchronous, not asynchronous,
  1189. and uses FM0 encoding. FM0 requires a 4x clock, not 16x, so the speed of
  1190. LocalTalk is 230.4 = 4 * 57600.
  1191.  
  1192. > It is 
  1193. > probably the case that Macs like the IIsi, etc. could support higher 
  1194. > interrupt driven baud rates, but the current serial driver has no 
  1195. > mechanism for specifying a baud rate higher than 57.6KB.
  1196.  
  1197. It is a hardware limitation. If you were able to externally clock the
  1198. serial chip, you could run asynchronous rates up to 250 Kbps. (Highest
  1199. speed of the clock input is 4 MHz.) Unfortunately, the serial driver has
  1200. no provisions for reprogramming the clock inputs, so you'd have to
  1201. go directly to the chip.
  1202.  
  1203. > You will have to write you own driver if you want to run at higher baud 
  1204. > rates. This means you will have to get the technical details on the Zilog 
  1205. > SCC.
  1206.  
  1207. Something you should have done to start with. <grin>
  1208.  
  1209. > I do not know if the Mac serial driver always 
  1210. > enables the driver before each transmission and then disables it at the 
  1211. > end of transmission, or whether it enables the driver at open and disables 
  1212. > it at close, or whether it is always enabled. 
  1213.  
  1214. With the serial driver, the "drivers" are always enabled. 
  1215.  
  1216. > If you decide you need to write your own driver, I seem to recall that at 
  1217. > one time Apple made the source code of a (maybe not THE) serial driver 
  1218. > available. If I remember correctly, does anyone remember how to get this 
  1219. > code?
  1220.  
  1221. Apple did make the code available to some developers, back about 1985. This
  1222. is no longer the case, primarily because of the changes in the Mac hardware.
  1223.  
  1224. Writing your own driver is not recommended, because you will bump right into
  1225. compatibility problems with the IIfx and Quadras, and potentially won't work
  1226. at all with future Macs.
  1227.  
  1228. There's a lot of stuff the serial driver could do, but doesn't have the 
  1229. interface calls to do. Here's to hoping Apple fixes this in the future.
  1230.  
  1231. - -- 
  1232. Bill Coleman, AA4LR                ! CIS: 76067,2327    AppleLink: D1958
  1233. Principal Software Engineer        ! Packet Radio: AA4LR @ W4QO
  1234. Hayes Microcomputer Products, Inc. ! UUCP: uunet!hayes!bcoleman
  1235. POB 105203 Atlanta, GA 30348 USA   ! Internet: bcoleman%hayes@uunet.uu.net
  1236. Disclaimer: "My employer doesn't pay me to have opinions."
  1237. Quote: "The same light shines on vineyards that makes deserts." -Steve Hackett.
  1238.  
  1239.  
  1240. ---------------------------
  1241.  
  1242. End of C.S.M.P. Digest
  1243. **********************
  1244.